#pragma once
#include <easyx.h>
#include <string>
#include <vector>
#include <regex>
class TableWidget {
private:
    int x;                  // 表位x轴方向位置
    int y;                  // 表格y轴方向位置
    int width;              // 表格长度
    int height;             // 表格宽度
    int visibleRowCount;    // 最多可见行数
    int rowHeight;          // 行的高度
    int scrollOffset;       // 偏移
    std::vector<std::vector<std::wstring>> data;
    std::vector<int> columnWidths; // 列的宽度
    //std::vector<int> selectedRows;
    int selectedRow;        // 被选中的行
    int scrollbarWidth;
    int handleHeight;
    int handleY;

public:
    TableWidget(int x, int y, int width, int height, int visibleRowCount);
    int getSelectedRow() const;
    void getSelectedRows(std::vector<int>& a) const;
    std::wstring GetRowData(int row, int col);

    std::wstring getSelectedInfo(int col) const;
    void setData(const std::vector<std::vector<std::wstring>>& newData);
    void calculateColumnWidths();
    void scrollUp();
    void scrollDown();
    void scroll(int mouseX, int mouseY, int wheel);
    int handleMouseClick(int mouseX, int mouseY);
    void draw();
};